﻿using System;
using System.Collections.Generic;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using ExtAspNet;
using SubSonic;

namespace TCMSystem.business.enterprise
{
    public partial class company_edit : PageBase
    {
        private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        #region 模块类型
        /// <summary>
        /// 当前页面所属的模块
        /// </summary>
        public override ModuleType Module
        {
            get
            {
                //TODO:模块权限
                return ModuleType.BizCompany;
            }
        }
        #endregion 模块类型

        #region Page_Load

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadData();
            }
        }

        private void LoadData()
        {
            // 权限检查
            if (!CheckPowerEdit())
            {
                CheckPowerFailWithPage();
                return;
            }

            btnClose.OnClientClick = ActiveWindow.GetConfirmHidePostBackReference();

            int id = GetQueryIntValue("id");
            TblBizEnterprise current = TblBizEnterprise.FetchByID(id);
            if (current == null)
            {
                // 参数错误，首先弹出Alert对话框然后关闭弹出窗口
                Alert.Show("参数错误！", String.Empty, ActiveWindow.GetHideReference());
                return;
            }

            // 企业名称
            this.tbxEnterpriseName.Text = current.EnterpriseName;
            // 总体情况
            this.tbxOverview.Text = current.Overview;
            // 生产项目
            this.tbxProductionProject.Text = current.ProductionProject;
            // 用地面积
            this.tbxLandArea.Text = current.LandArea;
            // 投资规模
            this.tbxInvestmentScale.Text = current.InvestmentScale;
            // 手续办理情况
            this.tbxFormalitiesStatus.Text = current.FormalitiesStatus;
            // 建设进度
            this.tbxConstructionProgress.Text = current.ConstructionProgress;
            // 需管委会协调解决的问题
            this.tbxSolveProblems.Text = current.SolveProblems;

        }
        #endregion

        #region Events

        protected void btnSaveClose_Click(object sender, EventArgs e)
        {
            int id = GetQueryIntValue("id");

            if (CheckSameName(id))
            {
                return;
            }

            TblBizEnterprise item = TblBizEnterprise.FetchByID(id);

            // 企业名称
            item.EnterpriseName = this.tbxEnterpriseName.Text.Trim();
            // 总体情况
            item.Overview = this.tbxOverview.Text.Trim();
            // 生产项目
            item.ProductionProject = this.tbxProductionProject.Text.Trim();
            // 用地面积
            item.LandArea = this.tbxLandArea.Text.Trim();
            // 投资规模
            item.InvestmentScale = this.tbxInvestmentScale.Text.Trim();
            // 手续办理情况
            item.FormalitiesStatus = this.tbxFormalitiesStatus.Text.Trim();
            // 建设进度
            item.ConstructionProgress = this.tbxConstructionProgress.Text.Trim();
            // 需管委会协调解决的问题
            item.SolveProblems = this.tbxSolveProblems.Text.Trim();

            item.Save(User.Identity.Name);

            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }


        private bool CheckSameName(int id)
        {
            SqlQuery q = new Select().From<TblBizEnterprise>();
            q.Where("1").IsEqualTo("1");
            // 工业企业区分：1
            q.And(TblBizEnterprise.EnterpriseTypeColumn).IsEqualTo(1);
            q.And(TblBizEnterprise.EnterpriseIdColumn).IsNotEqualTo(id);

            // 在工业企业名中搜索同名项
            q.And(TblBizEnterprise.EnterpriseNameColumn).IsEqualTo(this.tbxEnterpriseName.Text);

            // 满足条件的总共有多少条记录
            if (q.GetRecordCount() != 0)
            {
                this.tbxEnterpriseName.MarkInvalid(String.Format("已经存在工业企业名为'{0}'的记录，请重新输入！", this.tbxEnterpriseName.Text));
                Alert.ShowInTop(String.Format("已经存在工业企业名为'{0}'的记录，请重新输入！", this.tbxEnterpriseName.Text));
                return true;
            }

            return false;
        }

        #endregion
    }
}